/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package la.foton.homebroker.negocio.entidade;

import la.foton.homebroker.negocio.entidade.enumeracoes.TipoAcao;
import la.foton.homebroker.negocio.validador.Validador;
import la.foton.homebroker.negocio.validador.ViolacaoNegocioException;
import la.foton.homebroker.negocio.validador.obrigatoriedade.Obrigatorio;
import la.foton.homebroker.negocio.validador.padrao.Padrao;
import la.foton.homebroker.negocio.validador.padrao.PadraoInvalidoException;

/**
 *
 * @author luiz
 */
public class Acao {
	
    private static final String PADRAO_SIGLA_ACAO = "[a-zA-Z]{4,5}[0-9][tT]{0,1}";
    
	@Obrigatorio
    @Padrao(PADRAO_SIGLA_ACAO)
    private String codigo;
    @Obrigatorio
    private String descricao;
    @Obrigatorio
    private TipoAcao tipo;
    
    private int lotePadrao;
    
    public void valida() throws ViolacaoNegocioException {
    	Validador.valida(this);
    }
    
	public String getCodigo()
	{
		return codigo;
	}
	public void setCodigo(String codigo)
	{
		this.codigo = codigo;
	}
	public String getDescricao()
	{
		return descricao;
	}
	public void setDescricao(String descricao)
	{
		this.descricao = descricao;
	}
	public TipoAcao getTipo()
	{
		return tipo;
	}
	public void setTipo(TipoAcao tipo)
	{
		this.tipo = tipo;
	}

	public int getLotePadrao()
	{
		return lotePadrao;
	}

	public void setLotePadrao(int lotePadrao)
	{
		this.lotePadrao = lotePadrao;
	}

	public static void valida(String codigoAcao) throws PadraoInvalidoException
	{
		if(!codigoAcao.matches(PADRAO_SIGLA_ACAO))
			throw new PadraoInvalidoException();
	}
}
